﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class РаботаСДиалогамиСервер
	{
		////////////////////////////////////////////////////////////////////////////////
		// ПОЛУЧЕНИЕ ЗНАЧЕНИЙ ДЛЯ ЗАПОЛНЕНИЯ ДОКУМЕНТОВ
		// ПОДРАЗДЕЛЕНИЯ ОРГАНИЗАЦИЙ

		public object ПодразделениеОрганизации(/*Подразделение, Организация*/)
		{
			if(true/*НЕ ЗначениеЗаполнено(Подразделение) ИЛИ НЕ ЗначениеЗаполнено(Организация)*/)
			{
				/*// Подразделение организации определить не сможем
*/
			}
			/*Запрос = Новый Запрос(
	"ВЫБРАТЬ ПЕРВЫЕ 2
	|	СоответствиеПодразделенийИПодразделенийОрганизаций.ПодразделениеОрганизации
	|ИЗ
	|	РегистрСведений.СоответствиеПодразделенийИПодразделенийОрганизаций КАК СоответствиеПодразделенийИПодразделенийОрганизаций
	|ГДЕ
	|	СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение = &Подразделение
	|	И СоответствиеПодразделенийИПодразделенийОрганизаций.Организация = &Организация
	|	И СоответствиеПодразделенийИПодразделенийОрганизаций.ПодразделениеОрганизации <> ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)"
	);*/
			//Запрос.УстановитьПараметр("Подразделение", Подразделение);
			//Запрос.УстановитьПараметр("Организация",   Организация);
			//Выборка = Запрос.Выполнить().Выбрать();
			if(true/*Выборка.Количество() = 1*/)
			{
				//Выборка.Следующий();
			}
			return null;
		}
		// НОМЕНКЛАТУРА
		//Функция вызывается при изменении номенклатуры в табличной части документа
		//	Готовит данные для заполнения связанных с номенклатурой реквизитов табличной части
		//Параметры: ДанныеДляЗаполнения - структура, должна содержать выбранную в табличной части Номенклатуру (ключ - Номенклатура)
		//ВозвращаемыеЗначения: Структура, содержит данные для заполнения реквизитов ЕдиницаИзмерения, Коэффициент, Качество, ЕдиницаИзмеренияМест

		public object ИзменениеНоменклатуры(/*ДанныеДляЗаполнения*/)
		{
			//ЗначенияДляЗаполнения = Новый Структура();
			/*// Основные реквизиты
*/
			//ЗначенияДляЗаполнения.Вставить("ЕдиницаИзмерения",	ДанныеДляЗаполнения.Номенклатура.ЕдиницаХраненияОстатков);
			//ЗначенияДляЗаполнения.Вставить("Коэффициент",		ДанныеДляЗаполнения.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент);
			//ЗначенияДляЗаполнения.Вставить("Качество", 			Справочники.Качество.Новый);
			/*// ЕдиницаИзмеренияМест
*/
			//ЕдиницаИзмеренияМест = ДанныеДляЗаполнения.Номенклатура.ЕдиницаИзмеренияМест;
			//ДанныеДляЗаполнения.Вставить("СведенияЕдиницаИзмеренияМест", РаботаСДиалогамиСервер.СведенияЕдиницаИзмеренияМест(ЕдиницаИзмеренияМест));
			/*// Могут потребоваться на клиенте
*/
			//ЗначенияДляЗаполнения.Вставить("ЕдиницаИзмеренияМест", ЕдиницаИзмеренияМест);
			return null;
		}
		// ЕДИНИЦЫ ИЗМЕРЕНИЯ
		//Функция вызывается при изменении единицы измерения в табличной части документа
		//	Готовит данные для заполнения связанных с единицей реквизитов табличной части
		//Параметры: ДанныеДляЗаполнения - структура, должна содержать выбранные в табличной части ЕдиницуИзмерения и ЕдиницуИзмеренияМест
		//		Ключи: ЕдиницаИзмерения, ЕдиницаИзмеренияМест
		//ВозвращаемыеЗначения: Структура, содержит данные для заполнения реквизита Коэффициент и сведения для пересчета количества мест

		public object ИзменениеЕдиницыИзмерения(/*ДанныеДляЗаполнения*/)
		{
			//ЗначенияДляЗаполнения = Новый Структура();
			//ЗначенияДляЗаполнения.Вставить("Коэффициент", ДанныеДляЗаполнения.ЕдиницаИзмерения.Коэффициент);
			//ДанныеДляЗаполнения.Вставить("СведенияЕдиницаИзмеренияМест", РаботаСДиалогамиСервер.СведенияЕдиницаИзмеренияМест(ДанныеДляЗаполнения.ЕдиницаИзмеренияМест));
			return null;
		}

		public object СведенияЕдиницаИзмеренияМест(/*ЕдиницаИзмерения*/)
		{
			//ВозвращаемоеЗначение = Новый Структура("Коэффициент, ПорогОкругления, ПредупреждатьОНецелыхМестах");
			//ЗаполнитьЗначенияСвойств(ВозвращаемоеЗначение, ЕдиницаИзмерения);
			return null;
		}
		// КОНТРАГЕНТЫ И ДОГОВОРЫ

		public object ПриИзмененииЗначенияКонтрагента(/*ДанныеДляЗаполнения, СтруктураПараметровДляПолученияДоговора*/)
		{
			//ЗначенияДляЗаполнения = Новый Структура();
			//ДоговорКонтрагента = ЗаполнениеДокументов.ПолучитьДоговорПоОрганизацииИКонтрагенту(ДанныеДляЗаполнения.Организация, ДанныеДляЗаполнения.Контрагент, СтруктураПараметровДляПолученияДоговора);
			if(true/*ЗначениеЗаполнено(ДоговорКонтрагента) И НЕ ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом*/)
			{
				//ДанныеДляЗаполнения.Вставить("ДоговорКонтрагента", ДоговорКонтрагента);
				/*//Получим значения для заполнения по данным договора контрагента
*/
				//ЗначенияДляЗаполнения = ПриИзмененииЗначенияДоговора(ДанныеДляЗаполнения);
				//ЗначенияДляЗаполнения.Вставить("ДоговорКонтрагента", ДоговорКонтрагента);
			}
			return null;
		}

		public object ПриИзмененииЗначенияДоговора(/*ДанныеДляЗаполнения*/)
		{
			//ДоговорКонтрагента = ДанныеДляЗаполнения.ДоговорКонтрагента;
			/*//Получим курс и кратность валюты
*/
			//СтруктураКурсаДокумента = МодульВалютногоУчета.ПолучитьКурсВалюты(ДоговорКонтрагента.ВалютаВзаиморасчетов, ДанныеДляЗаполнения.Дата);
			/*ЗначенияДляЗаполнения = Новый Структура("ВалютаДокумента, КурсВзаиморасчетов, КратностьВзаиморасчетов, Организация",
		ДоговорКонтрагента.ВалютаВзаиморасчетов, СтруктураКурсаДокумента.Курс, СтруктураКурсаДокумента.Кратность,
		ДоговорКонтрагента.Организация);*/
			/*//Заполнение типа цен: тип цен закупки всегда заполняется из договора, тип цен продажи - только если заполнен в договоре
*/
			if(true/*ТипЗнч(ДоговорКонтрагента.ТипЦен) = Тип("СправочникСсылка.ТипыЦенНоменклатурыКонтрагентов") ИЛИ
		ЗначениеЗаполнено(ДоговорКонтрагента.ТипЦен)*/)
			{
				//ЗначенияДляЗаполнения.Вставить("ТипЦен", ДоговорКонтрагента.ТипЦен);
			}
			if(true/*ЗначениеЗаполнено(ДоговорКонтрагента.ТипЦен) И ДанныеДляЗаполнения.УчитыватьНДС*/)
			{
				//ЗначенияДляЗаполнения.Вставить("СуммаВключаетНДС", ДоговорКонтрагента.ТипЦен.ЦенаВключаетНДС);
			}
			/*//Получим дату оплаты
*/
			if(true/*ДанныеДляЗаполнения.Свойство("ДатаОплаты")*/)
			{
				//УправлениеЗаказами.УстановитьДатуОплатыПоДоговору(ДанныеДляЗаполнения,"ДоговорКонтрагента");
				//ЗначенияДляЗаполнения.Вставить("ДатаОплаты", ДанныеДляЗаполнения.ДатаОплаты);
			}
			//ЗначенияДляЗаполнения.Вставить("ДоговорПоЗаказам", ДанныеДляЗаполнения.ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоЗаказам);
			//ЗначенияДляЗаполнения.Вставить("ДоговорПоСчетам", ДанныеДляЗаполнения.ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоСчетам);
			return null;
		}

		public object ПолучитьКурсВалюты(/*ДанныеДляЗаполнения*/)
		{
			//СтруктураКурсаДокумента = МодульВалютногоУчета.ПолучитьКурсВалюты(ДанныеДляЗаполнения.ВалютаДокумента, ДанныеДляЗаполнения.Дата);
			/*ЗначенияДляЗаполнения = Новый Структура("КурсВзаиморасчетов, КратностьВзаиморасчетов",
		СтруктураКурсаДокумента.Курс, СтруктураКурсаДокумента.Кратность);*/
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПОДГОТОВКА ДАННЫХ УПРАВЛЯЕМЫХ ФОРМ
		// Устанавливает отборы в динамическом списке
		//
		// Параметры
		//  Список – динамический список
		//	СтруктураПараметров - структура, содержащая отборы
		//

		public void УстановитьОтборыВДинамическомСписке(/*Список, СтруктураПараметров*/)
		{
			if(true/*СтруктураПараметров.Свойство("ОтборПоСпискуСсылок")*/)
			{
				/*//Поле ОтборПоСпискуСсылок - это структура которая может содержать следующие поля:
*/
				/*//	МассивСсылок - обязательное, массив ссылок на документы,
*/
				/*//	Представление - не обязательное, - представление отбора,
*/
				/*//	Использование - не обязательное, - признак использования отбора, по умолчанию Истина
*/
				//СписокСсылок = Новый СписокЗначений();
				//СписокСсылок.ЗагрузитьЗначения(СтруктураПараметров.ОтборПоСпискуСсылок.МассивСсылок);
				//ОтборПоСсылке = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
				//ОтборПоСсылке.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
				//ОтборПоСсылке.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
				//ОтборПоСсылке.ПравоеЗначение = СписокСсылок;
				if(true/*СтруктураПараметров.ОтборПоСпискуСсылок.Свойство("Представление")*/)
				{
					//ОтборПоСсылке.Представление = СтруктураПараметров.ОтборПоСпискуСсылок.Представление;
				}
				if(true/*СтруктураПараметров.ОтборПоСпискуСсылок.Свойство("Использование")*/)
				{
					//ОтборПоСсылке.Использование = СтруктураПараметров.ОтборПоСпискуСсылок.Использование;
				}
			}
		}
		// УстановитьОтборыВДинамическомСписке()
		//Подготавливает соответствие между значениями перечисления СтавкиНДС и числовыми значениями этих ставок
		//	Используется в управляемых формах документов, которые содержат в табличных частях ставку НДС
		//Возвращаемое значение: фиксированное соответствие, ключ - значение перечисления СтавкиНДС, значение - число (% НДС)

		public object ПолучитьПроцентыСтавокНДС(/**/)
		{
			//СоответствиеСтавокНДС = Новый Соответствие();
			/*//возвращается именно фиксированное соответствие, 
*/
			/*//	т.к. результат используется в качестве переменной управляемой формы
*/
			return null;
		}
	}
}
